package jmine.tec.report.api.table;

import java.io.Serializable;
import java.util.Map;

import jmine.tec.report.api.RendererTarget;

/**
 * Interface que representa uma linha do relatório.
 * 
 * @author lundberg
 * @param <V> tipo de valor
 */
public interface ReportRow<V> extends RendererTarget, Serializable {

    /**
     * Cria as células referentes ao valor
     * 
     * @return collections de células
     */
    Map<String, ReportCell> getCellMap();

    /**
     * Retorna o registro associado a essa linha do relatório, pode ser <code>null</code> (em casos de linhas de grupamento).
     * 
     * @return o registro associado a essa linha do relatório, pode ser <code>null</code> (em casos de linhas de grupamento)
     */
    V getRecord();
}
